# App比Web端爬取更容易，反爬虫能力没有那么强，大多是以JSON形式传输，解析更简单。
# Web端，通过浏览器的开发者工具监听各个网络请求和响应过程
# App端查看这些内容需要借助抓包软件，常用抓包软件又WireShark、Fiddler、Charles、mitmproxy、AnyProxy，原理基本相同。
# 通过设置代理方式将收集处于抓包软件的监听之下，便可以看到App在运行过程中发生的所有请求和响应，相当于分析Ajax
# 若请求的URL、参数都是有规律的，总结出规律直接用程序模拟爬取即可
# 没有规律，利用mitmdump对接Python节本直接处理Response。
# 对App进行自动化控制，用到的库是Appium

# Charles是一个网络抓包工具，用来做App的抓包分析，得到App运行过程中发生的所有网络请求和响应内容，就和Web端F12中Network一致
# 相比Fiddler，Ccharles功能更强大，且跨平台支持更好，选Charles作为主要的移动端抓包工具，用于分析移动App的数据包，辅助完成抓取

# 1.以京东App为例，通过Charles抓取App运行过程中的网络数据包，查看具体的Request和Response

# 2.确保正确安装Charles并开启了代理服务，手机和Charles处于同一个局域网下，Charles代理和CharlesCA证书设置好

# 3.原理：Charles运行时，会在PC的8888端口开启代理服务，实际上是一个HTTP/HTTPS的代理
# 确保手机和PC在同一局域网内，可使用手机模拟器通过虚拟网络连接，也可用真机和PC通过无线网络连接
# 设置手机代理为Charles的代理地址，手机访问互联网的数据包就会流经Charles，Charles在转发这些数据包到真实的服务器，服务器返回的
# 数据包再由Charles转发回手机，Charles起到中间人的作用，所有流量包都可以捕捉到，所有HTTP请求和响应都可以捕获到，且进行修改

# 4.抓包：Charles会一直监听PC和手机发生的网络数据包，捕获到的数据包会显示在左侧，
# 左侧显示了Charles抓取到的请求，扫帚按钮可以清空当前捕获到的所有请求。点击第二个监听按钮，确保监听按钮是打开的，表示Charles
# 正在监听App的网络数据流。
# 打开手机京东，一定要提前设置好Charles的代理并配置好CA证书，否则没有效果
# 打开任意一个商品，如iPhone，打开商品评论页面，不断上拉加载评论，Charles捕获到过程中京东app发生的所有网络请求,
# 左侧列表会出现api.m.jd.com链接，不停闪动，是当前App发出的获取评论数据的请求被Charles获取到了，此请求对应接口就是获取评论接口

# 5.分析：回到Overview选项卡，上方显示了请求接口URL，响应状态Status Code、请求方式Method
# 点击Contents选项卡，查看请求和响应的详情信息
# 上半部分显示的是Request的信息，
# 下半部分是Response的信息，切换到JSON TEXT选项卡接口看到该Response的Body信息，该内容已经被格式化
# 请求是POST请求，还需要关心POST的表单信息，切换到Form选项卡即可查看
# 成功抓取App中的评论接口的请求和响应，且可以查看Response返回的JSON数据

# 6.重发：将捕获到的请求加以修改并发送修改后的请求，点击修改按钮，左侧列表多了一个以编辑图标为开头的链接，代表请求正在被修改
# 可以将Form中的某字段移除，点击Remove，点击Execute即可执行修改后的请求
# 有了修改功能，可以方便地使用Charles做调试，可通过修改参数、接口等来测试不同请求的响应状态，可以知道哪些参数是必要的，规律
# 得到一个最简单的接口和参数形式以供程序模拟调用
# 知道了请求和响应的具体信息，可以分析得到请求的URL和参数的规律，直接用程序模拟即可批量抓取
# App接口往往会带有密钥，并不能直接找到规律，利用Charles和mitmdump对接Python脚本实时处理抓取到的Response

